package tt.dz.service.sys;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;

import tt.dz.entity.base.JsonCommon;
import tt.dz.entity.base.JsonForList;
import tt.dz.entity.base.JsonForMapDataList;
import tt.dz.entity.base.OmsCommonParam;
import tt.dz.entity.station.OmsStation;
import tt.dz.entity.station.OmsStationAll;
import tt.dz.entity.station.IncomeVo;
import tt.dz.entity.station.OutcomeVo;
import tt.dz.entity.system.ChargeInfoVo;
import tt.dz.vo.oms.OmsStationVO;
import tt.dz.vo.oms.StationExportVO;

public interface StationService {
	public JsonForList getStationList(OmsStation station,String oper_id);
	public JsonForList addStation(OmsStation station);
	public JsonForList updateStation(OmsStation station);
	public JsonForList deleteStation(List<String> list);
	public List<OmsStation> findAll();
	public JsonCommon getStationByChargerId(String chargerId);
	public List<OmsStation> getStationByIds(String stationIds);
	public OmsStation getStationById(String stationId);
	public List<OmsStation> getStationByDistrictCode(String province_code,String city_code,String district_code);
	public JsonForList findAllOperMerchant();
	public JsonCommon getHomePageData(String charger_type);//charger_type:1为直流，2为交流，不传为查询全部
	public JsonForMapDataList getMapDataInit(String current_state);
	public String getNewStationId(OmsStation omsStation);//通过当前规则生成新的station_id
	JsonForList getStationListByPage(OmsStation station, int pageNo, int pageSize, String sortName, int sortVal,
			String oper_id);
	JsonForList getStationListByPage(OmsStationVO station, int pageNo, int pageSize, String sortName, int sortVal,
			String oper_id);
	public JsonForList getChargecountSummary(String startdate, String enddate,String year, String chargertype);
	public JsonForList getReserveCountSummary(String startdate, String enddate, String year, String chargertype);
	public JsonForList getCarbonEmissionSummary(String startdate, String enddate, String year, String chargertype);
	/**********************20160407 perlin add begin *****************************/
	public JsonForList getStationListWithIgnore(OmsStation station, String oper_id);
	/**********************20160407 perlin add end *****************************/
	public JsonForList getChargeCountById(String startdate, String enddate, String id, String type);
	public JsonForList getChargekwhById(String startdate, String enddate, String id, String type);
	public JsonForList getChargeAmountById(String startdate, String enddate, String id, String type);
	public JsonForList getReserveCountById(String startdate, String enddate, String id, String type);
	public JsonForList getReserveTimeById(String startdate, String enddate, String id, String type);
	public JsonForList getReserveAmountById(String startdate, String enddate, String id, String type);
	public JsonForList getYearChargeCountById(String year, String id, String type);
	public JsonForList getYearChargekwhById(String year, String id, String type);
	public JsonForList getYearChargeAmountById(String year, String id, String type);
	public JsonForList getYearReserveCountById(String year, String id, String type);
	public JsonForList getYearReserveTimeById(String year, String id, String type);
	public JsonForList getYearReserveAmountById(String year, String id, String type);
	public JsonForList getChargeSummaryById(String id, String type);
	public JsonForList getStationDetailByStationId(String station_id);
	public JsonForList getSimpleStationList(String station_id);
	public JsonCommon stationUpdateOrAddNotify(OmsStation station);
	public JsonCommon stationDeleteNotify(List<String> list);
	public List<Map<String, Object>> getNumberBindChargerOfStation(List<String> stationIdList);


	List<StationExportVO> getExportData(String[] list_stationId);
	public JsonForList getSimpleStationPageList(OmsCommonParam buildQueryParam, String stationId, String isAllowOpen, String currentState, String searchStr);

	public OmsStationAll getStationAllById(String stationId);
	//查询当月收入，后面可能按照当前用户可查看站点数目来查询
	public IncomeVo getIncome(String startTime, String endTime);
	//查询当月支出，后面可能按照当前用户可查看站点数目来查询   oms_station表中增加了一个每月场地费用的字段，outcomeVO中增加了一个default国家平均电费费率的字段
	public OutcomeVo getOutcome(String startTime, String endTime);
	
	public ChargeInfoVo getChargeInfoVo(String defaultProviceCode,String startTime, String endTime, String areaType, String areaCode) throws JsonParseException, JsonMappingException, IOException;

}
